import logging
import logging.config
import os

if not os.path.exists("logs"):
    os.mkdir("logs")


# token 过期时间 单位分钟
ACCESS_TOKEN_EXPIRE_MINUTES = 15 * 300
# refresh token 过期时间
REFRESH_TOKEN_EXPIRE_MINUTES = 60
SECRET_KEY = "09d25e094faa6ca2556c818166b7a9563b93f7099f6f0f4caa6cf63b88e8d3e7"
ALGORITHM = "HS256"


LOGGING_CONFIG = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {  # 格式化器
        'standard': {
            'format': '[%(levelname)s][%(asctime)s][%(filename)s][%(funcName)s][%(lineno)d] > %(message)s'
        }
    },
    'handlers': {
        'server_handler': {  # 服务请求和返回日志
            'level': 'INFO',
            # 默认的 logging.handlers.RotatingFileHandler 存在进程安全问题
            'class': 'concurrent_log_handler.ConcurrentRotatingFileHandler',  # 保存到文件，自动切
            'filename': 'logs/server_data.log',
            'maxBytes': 1024 * 1024 * 5,  # 日志大小 5M
            'backupCount': 4,
            'formatter': 'standard',
            'encoding': "utf-8"
        },
        'error_handler': {  # 错误日志
            'level': 'INFO',
            # 默认的 logging.handlers.RotatingFileHandler 存在进程安全问题
            'class': 'concurrent_log_handler.ConcurrentRotatingFileHandler',  # 保存到文件，自动切
            'filename': 'logs/error.log',
            'maxBytes': 1024 * 1024 * 5,  # 日志大小 5M
            'backupCount': 4,
            'formatter': 'standard',
            'encoding': "utf-8"
        },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {  # 日志分配到哪个handlers中
        'error': {  # 名为 'modify'的logger还单独处理
            'handlers': ['error_handler'],
            'level': 'DEBUG',
            'propagate': False,
        },
        'server': {
            'handlers': ['server_handler'],
            'level': 'INFO',
            'propagate': False,
        }
    }
}



# 加载日志配置
logging.config.dictConfig(LOGGING_CONFIG)
# 提供不同日志文件
ERROR_LOG = logging.getLogger('error')
SERVER_LOG = logging.getLogger('server')